package com.timss.opmm.service.impl;

import java.util.HashMap;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.timss.opmm.bean.Duty;
import com.timss.opmm.dao.DutyMapper;
import com.timss.opmm.service.DutyService;
import com.yudean.itc.dto.Page;

/**
 * @title: 值别service
 * @description: {desc}
 * @company: gdyd
 * @className: DutyServiceImpl.java
 * @author: fengzt
 * @createDate: 2014年6月4日
 * @updateUser: fengzt
 * @version: 1.0
 */
@Service("dutyService")
public class DutyServiceImpl implements DutyService {

    @Autowired
    private DutyMapper dutyMapper;

    public DutyMapper getDutyMapper() {
        return dutyMapper;
    }

    public void setDutyMapper(DutyMapper dutyMapper) {

        this.dutyMapper = dutyMapper;
    }

    /**
     * @description:查询结果中返回主键id的方法
     * @author: fengzt
     * @createDate: 2014年6月4日
     * @param duty 其中id为自增，不需要设置
     * @return:Duty
     */
    @Transactional(propagation = Propagation.REQUIRED)
    public Duty insertDuty(Duty duty) {

        dutyMapper.insertDuty( duty );
        return duty;
    }

    /**
     * @description:更新值别表
     * @author: fengzt
     * @createDate: 2014年6月4日
     * @param Duty:
     * @return int
     */
    @Transactional(propagation = Propagation.REQUIRED)
    public int updateDuty(Duty duty) {
        return dutyMapper.updateDuty( duty );
    }

    /**
     * @description:通过Id拿到值别表
     * @author: fengzt
     * @createDate: 2014年6月4日
     * @param id
     * @return:Duty
     */
    public Duty getDutyById(int id) {

        return dutyMapper.getDutyById( id );
    }

    /**
     * @description:通过ID 删除 duty
     * @author: fengzt
     * @createDate: 2014年6月4日
     * @param id:
     * @return
     */
    @Transactional(propagation = Propagation.REQUIRED)
    public int deleteDutyById(int id) {

        return dutyMapper.deleteDutyById( id );
    }

    /**
     * @description:更新duty
     * @author: fengzt
     * @createDate: 2014年6月4日
     * @param DutyMap:
     */
    @Transactional(propagation = Propagation.REQUIRED)
    public void updateDutyByMap(HashMap<?, ?> DutyMap) {

    }

    /**
     * @description:批量插入
     * @author: fengzt
     * @createDate: 2014年6月4日
     * @param list:
     */
    @Transactional(propagation = Propagation.REQUIRED)
    public void batchInsertDuty(List<Duty> list) {

    }

    /**
     * @description:duty 分页
     * @author: fengzt
     * @createDate: 2014年6月4日
     * @param page
     * @return:
     */
    public List<Duty> getDutyByPage(Page<HashMap<?, ?>> page) {
        page.setSortKey( "id" );
        page.setSortOrder( "asc" );
        
        return dutyMapper.getDutyByPage( page );
    }

    /**
     * @description:duty 分页 (返回hashmap)
     * @author: fengzt
     * @createDate: 2014年6月4日
     * @param page
     * @return: List<HashMap<?, ?>>
     */
    public List<HashMap<?, ?>> getDutyMapByPage(Page<HashMap<?, ?>> page) {
        return null;
    }

    /**
     * @description:拿出所有值别duty
     * @author: fengzt
     * @createDate: 2014年6月4日
     * @return:
     */
    public List<Duty> getAllDuty() {
        return dutyMapper.getAllDuty();
    }

    /**
     * @description:通过hashmap 拿到List
     * @author: fengzt
     * @createDate: 2014年6月4日
     * @param map
     * @return:List<Duty>
     */
    public List<Duty> getDutyByMap(HashMap<?, ?> map) {
        return null;
    }

    /**
     * @description:值别列表 高级搜索
     * @author: fengzt
     * @createDate: 2014年6月4日
     * @param duty 查询form vo
     * @param rows 一页有多少条
     * @param page 第几页
     * @return:List<Duty>
     */
    public List<Duty> getDutyBySearch(HashMap<String, Object> map, Page<HashMap<?, ?>> page) {
        page.setParameter( "id", map.get( "id" ) );
        page.setParameter( "deptId", map.get( "deptId" ) );
        page.setParameter( "name", map.get( "name" ) );

        page.setParameter( "num", map.get( "num" ) );
        page.setParameter( "siteId", map.get( "siteId" ) );
        page.setParameter( "sortType", map.get( "sortType" ) );
        
        page.setSortKey( "id" );
        page.setSortOrder( "asc" );

        List<Duty> dutyList = dutyMapper.getDutyBySearch( page );
        return dutyList;
    }

}
